package com.bilzhan.epidemic;

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.FilterType;
import org.springframework.stereotype.Controller;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.ViewResolverRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;

@Configuration
@EnableWebMvc
@ComponentScan(includeFilters = @ComponentScan.Filter(type = FilterType.ANNOTATION,classes = Controller.class))//组件扫描
//包含过滤器，包含后面的ComponentScan.Filter
//type是包含类型，FilterType.ANNOTATION（根据注解来进行包含）
//包含带有Controller.class的类
public class SpringMVCConfig extends WebMvcConfigurerAdapter {
    //添加视图控制器，将客户端发来的某个请求快速地转换为某个视图名称
    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        registry.addViewController("/").setViewName("epidemic");
        //参数registry（注册、登记），addViewController添加视图控制器，后面（）内跟客户端发来地路径，去到setViewName中
        //整句意思：客户端发来试图请求如果没有明确指示访问哪一个资源，就返回epidemic视图名
    }

    //配置视图解释器，作用：把视图的名字解析成对应的内部资源视图
    @Override
    public void configureViewResolvers(ViewResolverRegistry registry) {
        //定义了一个内部资源视图解释器（InternalResourceViewResolver）
        registry.jsp("/",".jsp");
        //prefix是路径的前缀，suffix是路径的后缀
        //结合上面的addViewControllers视图控制器，当客户端发来一个没有明确指示访问哪一个资源，就返回epidemic视图名
        //当视图解析器收到控制器返回的视图名时，经过解析变成/epidemic.jsp，这是根路径下的一个jsp文件
    }
}
